package shuaige.jdk.集合.有序列表的集合List;

import shuaige.jdk.model.Person;

import java.util.List;

public class List的equals比较方法的实现 {
    public static void main(String[] args) {
        List<Person> list = List.of(
                new Person("Xiao", 18),
                new Person("Mao", 25),
                new Person("Bob", 20)
        );
        boolean exist = list.contains(new Person("Bob", 20));
        System.out.println(exist ? "测试成功!" : "测试失败!");
    }

    /**
     * equals()方法要求我们必须满足以下条件：
     * 自反性（Reflexive）：对于非null的x来说，x.equals(x)必须返回true；
     * 对称性（Symmetric）：对于非null的x和y来说，如果x.equals(y)为true，则y.equals(x)也必须为true；
     * 传递性（Transitive）：对于非null的x、y和z来说，如果x.equals(y)为true，y.equals(z)也为true，那么x.equals(z)也必须为true；
     * 一致性（Consistent）：对于非null的x和y来说，只要x和y状态不变，则x.equals(y)总是一致地返回true或者false；
     * 对null的比较：即x.equals(null)永远返回false。
     */
    public static void 比较1() {
        List<String> list = List.of("A", "B", "C");
        System.out.println(list.contains("C")); // true
        System.out.println(list.contains("X")); // false
        System.out.println(list.indexOf("C")); // 2
        System.out.println(list.indexOf("X")); // -1
    }

    public static void 比较2() {
        List<String> list = List.of("A", "B", "C");
        System.out.println(list.contains(new String("C"))); // true or false?
        System.out.println(list.indexOf(new String("C"))); // 2 or -1?
    }


}
